﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
using System.Windows.Forms;
using transportsystem.DTO;
using transportsystem.BUS;


namespace transportsystem
{
    public partial class frmNhanVien : Form
    {

        DataTable dt;
        bool hideControls = true;
        int iIndex;
        bool addNew = false;

        public frmNhanVien()
        {
            InitializeComponent();
        }
       
        void HideAddNew(bool value)
        {
            if (value == true)
                cbbDaiLy.Visible = false;
            else
                cbbDaiLy.Visible = true;
        }

        // set title dgvNhanVien
        public void SetDataGridTitle()
        {
            string[] a = new string[12] { "Mã nhân viên", "Tên nhân viên", "Tên đăng nhập", "Mật khẩu", "Ngày sinh", "CMND", "Lương", "Địa chỉ", "Số điện thoại", "Đại lý", "Người quản lý", "Chức vụ" };

            for (int i = 0; i < a.Count(); i++)
            {
                dgvNhanVien.Columns[i].HeaderText = a[i];
               
            }
            
        }
        //set title dgvNhanVien2
        public void SetDataGridTitle2()
        {
            string[] a = new string[12] { "Mã nhân viên", "Tên nhân viên", "Tên đăng nhập", "Mật khẩu", "Ngày sinh", "CMND", "Lương", "Địa chỉ", "Số điện thoại", "Đại lý", "Người quản lý", "Chức vụ" };

            for (int i = 0; i < a.Count(); i++)
            {
                dgvNhanVien2.Columns[i].HeaderText = a[i];

            }

        }
       

        private void frmNhanVien2_Load(object sender, EventArgs e)
        {
            // TODO: This line of code loads data into the 'okDataSet.daily' table. You can move, or remove it, as needed.
          
            // TODO: This line of code loads data into the 'okDataSet.daily' table. You can move, or remove it, as needed.
           // this.dailyTableAdapter.Fill(this.okDataSet.daily);
            HideAddNew(hideControls);
            string a="";
            DataTable daily = DaiLyBUS.getDaiLyList();
            cmbDaiLy.DataSource = daily;
            cmbDaiLy.DisplayMember = daily.Columns[1].ToString();
            cmbDaiLy.ValueMember = daily.Columns[0].ToString();
            SqlParameter[] sp = new SqlParameter[1];
            sp[0] = new SqlParameter("@tennv",a);
            dt = NhanVienBUS.getNhanVienList(sp);
            if (dt != null && dt.Rows.Count > 0)
            {
                dgvNhanVien.DataSource = dt;
            }
            SetDataGridTitle();
        }

      
     
        public void SetValueToControls()
        {
            if (dt.Rows.Count > 0)
            {
                int id = int.Parse(dt.Rows[iIndex]["manv"].ToString());
                SqlParameter[] sp = new SqlParameter[1];
                sp[0] = new SqlParameter("@manv", id);
                DataTable nv = NhanVienBUS.getNhanVienID(sp);
                txtName.Text = nv.Rows[0]["tennv"].ToString();
                txtNgaySinh.Text = nv.Rows[0]["ngaysinh"].ToString();
                txtCMND.Text = nv.Rows[0]["cmnd"].ToString();
                txtLuong.Text = nv.Rows[0]["luong"].ToString();
                txtDiaChi.Text = nv.Rows[0]["diachi"].ToString();
                txtSoDienThoai.Text = nv.Rows[0]["sodt"].ToString();
                cmbDaiLy.SelectedValue = int.Parse(nv.Rows[0]["madaily"].ToString());
                txtNguoiQuanLy.Text = nv.Rows[0]["manguoiquanly"].ToString();
                txtChucVu.Text = nv.Rows[0]["macv"].ToString();
                
            }
        }


     
        bool CheckInfo()
        {
            if (txtName.Text == "" || txtCMND.Text == "" || txtChucVu.Text == "" || 
                txtDiaChi.Text == ""||txtNgaySinh.Text==""||txtLuong.Text=="" || txtCMND.Text =="")
            {
                MessageBox.Show("Chưa điền đủ thông tin cần thiết!");
                return false;
            }
            return true;
        }

        private void pnlAddNew_Paint(object sender, PaintEventArgs e)
        {

        }

        private void chkHideControls_CheckedChanged(object sender, EventArgs e)
        {
            hideControls = !hideControls;
            HideAddNew(hideControls);
        }

        private void cbbDaiLy_Paint(object sender, PaintEventArgs e)
        {

        }

        private void dgvNhanVien_CellDoubleClick_1(object sender, DataGridViewCellEventArgs e)
        {
            iIndex = e.RowIndex;
            
            SetValueToControls();
        }

        private void btnSave_Click_1(object sender, EventArgs e)
        {
            if (CheckInfo() == true)
            {
                string id;
                if (addNew == true)
                {
                    id = "0";
                }
                else
                {
                    id = dt.Rows[iIndex]["manv"].ToString();
                }
                string hoten = txtName.Text;
                string tendangnhap = "";
                string matkhau = "";
                DateTime ngaysinh = DateTime.Parse(txtNgaySinh.Text);

                string cmnd = txtCMND.Text;
                int luong = int.Parse(txtLuong.Text);
                string diachi = txtDiaChi.Text;
                string sodienthoai = txtSoDienThoai.Text;
                int madaily = int.Parse(cmbDaiLy.SelectedValue.ToString());
                int manguoiquanly = int.Parse(txtNguoiQuanLy.Text);
                int chucvu = int.Parse(txtChucVu.Text);
                SqlParameter[] sp = new SqlParameter[12];
                sp[0] = new SqlParameter("@manv", id);
                sp[1] = new SqlParameter("@tennv", hoten);
                sp[2] = new SqlParameter("@tendangnhap", tendangnhap);
                sp[3] = new SqlParameter("@matkhau", matkhau);
                sp[4] = new SqlParameter("@ngaysinh", ngaysinh);
                sp[5] = new SqlParameter("@cmnd", cmnd);
                sp[6] = new SqlParameter("@diachi", diachi);
                sp[7] = new SqlParameter("@sodt", sodienthoai);
                sp[8] = new SqlParameter("@madaily", madaily);
                sp[9] = new SqlParameter("@manguoiquanly", manguoiquanly);
                sp[10] = new SqlParameter("@macv", chucvu);
                sp[11] = new SqlParameter("@luong", luong);
                int i = NhanVienBUS.getThaoTacNhanVien(sp);
                if (i == 1)
                {
                    MessageBox.Show("Cập nhật thành công");
                    frmNhanVien2_Load(sender, e);
                }
                else
                    MessageBox.Show("Thất bại");
            }
        }

        private void btnOK_Click(object sender, EventArgs e)
        {

            txtName.Text = "";
            txtNgaySinh.Text = "";
            txtCMND.Text = "";
            txtLuong.Text = "";
            txtDiaChi.Text = "";
            txtSoDienThoai.Text = "";

            txtNguoiQuanLy.Text = "";
            txtChucVu.Text = "";
            addNew = true;
            txtName.Focus();
        }

        private void btnRemove_Click(object sender, EventArgs e)
        {
            
                if (MessageBox.Show("Xóa dòng dữ liệu này ?", "Message", MessageBoxButtons.YesNo, MessageBoxIcon.Error) == DialogResult.Yes)
                {
                    NhanVien nv = new NhanVien();
                    nv.Manv = int.Parse(dt.Rows[iIndex]["manv"].ToString());
                    bool i = NhanVienBUS.deleteNhanVien(nv);
                    string msg = "";
                    if (i == true)
                        msg = "Xóa thành công";
                    else
                        msg = "Xóa thất bại";
                    MessageBox.Show(msg);
                    frmNhanVien2_Load(sender, e);
                }
               
            
        }

        private void dgvNhanVien_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
            iIndex = e.RowIndex;
            addNew = false;
            SetValueToControls();
        }
        // lost update
        private void button1_Click(object sender, EventArgs e)
        {
            int luong = int.Parse(txtcapnhatluong.Text);
            int id = int.Parse(dt.Rows[iIndex]["manv"].ToString());
            SqlParameter[] sp = new SqlParameter[2];
            sp[0] = new SqlParameter("@manv", id);
            sp[1] = new SqlParameter("@luong", luong);
            bool i = NhanVienBUS.updateLuongNV(sp);
            string msg = "";
            if (i == true)
            {
                msg = "Cập nhật thành công";
            }
            else
               msg = "Cập nhật thất bại";
            MessageBox.Show(msg);
            frmNhanVien2_Load(sender, e);
        }

        //Unrepeatable read
        private void btnSearch_Click(object sender, EventArgs e)
        {
            if (rdbPhantom.Checked == true || rdbUnrepeatableRead.Checked == true)
            {
                string hoten = txtTimKiem.Text;
                SqlParameter[] sp = new SqlParameter[1];
                sp[0] = new SqlParameter("@tennv", hoten);
                DataSet ds = NhanVienBUS.getNhanVienList2(sp);
                DataTable dt1 = ds.Tables[0];
                DataTable dt2 = ds.Tables[1];
                if (dt1 != null && dt1.Rows.Count > 0)
                {
                    dgvNhanVien.DataSource = dt1;
                }
                if (dt2 != null && dt2.Rows.Count > 0)
                {
                    dgvNhanVien2.DataSource = dt2;
                }

                SetDataGridTitle();
                SetDataGridTitle2();
            }
            if (rdbDrityRead.Checked == true)
            {
                string hoten = txtTimKiem.Text;
                SqlParameter[] sp = new SqlParameter[1];
                sp[0] = new SqlParameter("@tennv", hoten);
                dt = NhanVienBUS.getNhanVienList(sp);
                if (dt != null && dt.Rows.Count > 0)
                {
                    dgvNhanVien.DataSource = dt;
                }
                SetDataGridTitle();
            }
        }

      
    }
}
